EBImage adalah package untuk pengolahan dan analisi gambar pada bahasa R. Dengan menggunakan EBImage, gambar bisa diatur kecerahan, di-crop, di-rotasi, hingga diberi filter.
Library EBImage harus di-import terlebih dahulu agar bisa dijalankan. Kemudian import gambar yang ingin ditampilkan.
library(EBImage)
Image <- readImage('cat.jpg')
display(Image)
print(Image)
## Image
## colorMode : Color
## storage.mode : double
## dim : 1366 768 3
## frames.total : 3
## frames.render: 1
##
## imageData(object)[1:5,1:6,1]
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 0.8588235 0.8666667 0.8705882 0.8627451 0.8666667 0.8784314
## [2,] 0.8588235 0.8705882 0.8705882 0.8666667 0.8705882 0.8823529
## [3,] 0.8627451 0.8705882 0.8745098 0.8666667 0.8705882 0.8823529
## [4,] 0.8627451 0.8745098 0.8784314 0.8705882 0.8745098 0.8862745
## [5,] 0.8666667 0.8784314 0.8784314 0.8745098 0.8784314 0.8901961
Di sini gambar ditampilkan menjadi dua dimana pada Image1 intensitas gambar ditambah 0.2, sedangkan pada Image2 dikurangi 0.2 sehingga nanti dapat terlihat perbedaan diantara kedua gambar.
Image1 <- Image + 0.2
Image2 <- Image - 0.2
par(mfrow = c(1,2))
plot(Image1)
plot(Image2)
Penyesuaian kontras dilakukan dengan menggunakan perkalian dimana Image3 dikali 0.5 dan Image4 dikali 2.
Image3 <- Image * 0.5
Image4 <- Image * 2
par(mfrow = c(1,2))
plot(Image3)
plot(Image4)
Pada koreksi gamma, digunakan simbol ^ dalam melakukan operasi
Image5 <- Image ^ 2
Image6 <- Image ^ 0.7
par(mfrow = c(1,2))
plot(Image5)
plot(Image6)
Pada cropping, gambar akan dipotong dimana ukuran pemotongan tidak boleh melebihi ukuran pixel gambar. Disini saya menggunakan gambar dengan rentang 1920x1080
display(Image[189:1000, 100:600,])
Pada transformasi ini, gambar akan diputar/dirotasi
Imagetr <- translate(rotate(Image, 45), c(50, 0))
display(Imagetr)
Dengan pengaturan warna ini, warna gambar akan berubah sesuai dengan warna yang diatur. Di bawah ini, saya menggunakan warna Graysicale sehingga nanti warna gambarnya akan berubah menjadi Graysicale
colorMode(Image) <- Grayscale
display(Image)
## Only the first frame of the image stack is displayed.
## To display all frames use 'all = TRUE'.
print(Image)
## Image
## colorMode : Grayscale
## storage.mode : double
## dim : 1366 768 3
## frames.total : 3
## frames.render: 3
##
## imageData(object)[1:5,1:6,1]
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 0.8588235 0.8666667 0.8705882 0.8627451 0.8666667 0.8784314
## [2,] 0.8588235 0.8705882 0.8705882 0.8666667 0.8705882 0.8823529
## [3,] 0.8627451 0.8705882 0.8745098 0.8666667 0.8705882 0.8823529
## [4,] 0.8627451 0.8745098 0.8784314 0.8705882 0.8745098 0.8862745
## [5,] 0.8666667 0.8784314 0.8784314 0.8745098 0.8784314 0.8901961
colorMode(Image) <- Color
display(Image)
Pada filtering ini, gambar akan di-smoothing atau dikaburkan dengan menggunakan low-pass filter dan selanjutnya gambar akan diberi high-pass filter untuk melihat perbedaanya
fLow <- makeBrush(21, shape='disc', step = FALSE)^2
fLow <- fLow/sum(fLow)
Image.fLow <- filter2(Image, fLow)
display(Image.fLow)
fHigh <- matrix(1, nc = 3, nr = 3)
fHigh[2, 2] <- -8
Image.fHigh <- filter2(Image, fHigh)
display(Image.fHigh)
Di bawah ini, noise pada gambar akan dihilangkan dengan menggunakan median filter
medFltr <- medianFilter(Image, 1.1)
display(medFltr)
Sumber referensi : https://thinkstudioo.blogspot.com/2018/03/analisis-image-menggunakan-ebimage-di-r.html https://thinkstudioo.blogspot.com/2018/03/analisis-image-menggunakan-ebimage-di-r_6.html